package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 会员邀请统计排名实体类，用于存储会员邀请好友数量的排名信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "member_invite_stastic_rank")
public class MemberInviteStasticRank {

    /**
     * 排名记录ID，主键，自动生成的唯一标识。
     */
    @ApiModelProperty(value = "排名记录ID", required = true, example = "1")
    private Long id;

    /**
     * 会员ID，排名信息所属的会员标识。
     */
    @ApiModelProperty(value = "会员ID", required = true, example = "1")
    private Long memberId;

    /**
     * 用户账户标识，可以是手机号或邮箱，用于识别会员。
     */
    @ApiModelProperty(value = "用户账户标识", required = true, example = "user@example.com")
    private String userIdentify;

    /**
     * 邀请一级好友数量，会员直接邀请的好友数量。
     */
    @ApiModelProperty(value = "邀请一级好友数量", required = true, example = "10")
    private int levelOne;

    /**
     * 邀请二级好友数量，会员间接邀请的好友数量。
     */
    @ApiModelProperty(value = "邀请二级好友数量", required = true, example = "20")
    private int levelTwo;

    /**
     * 类型，排名的类型，0表示日榜，1表示周榜，2表示月榜。
     */
    @ApiModelProperty(value = "类型：0 = 日榜，1 = 周榜， 2 = 月榜", required = true, example = "1")
    private int type;

    /**
     * 是否机器人，标识会员是否为机器人账户。
     */
    @ApiModelProperty(value = "是否机器人", hidden = true)
    @JsonIgnore
    private int isRobot = 0;

    /**
     * 统计日期，该排名信息对应的日期。
     */
    @ApiModelProperty(value = "统计日期", example = "2023-01-01 12:00:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime stasticDate;
}

